package singleton;

/**
 * 懒汉式单例模式
 * 私有构造器，保证不能在外部新建对象。
 * 实例化的时机挪到了getInstance（）方法中，做到了懒加载，但是失去了类加载时期初始化的线程安全保障。
 * 因此要使用 synchronized 关键字来保障线程安全，不管是不是多线程，一律加锁，带来了额外的性能消耗。
 */
public class LazySingleton {
    private static volatile/*volatile 关键字禁止指令重排*/ LazySingleton lazySingleton;

    private  LazySingleton(){

    }

    public static synchronized LazySingleton getInstance(){
        if(lazySingleton==null){
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }
}
